﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Persistencia;
using GestorDeFlotasModelo.Factorias;

namespace GestorDeFlotasModelo.Entities
{
    public partial class RolPorUsuario : IPersistibleModelo
    {

        PersistibleDB persistible;
        #region Miembros de IPersistibleModelo

        void IPersistibleModelo.CargarParametrosClave(HashTableNCSensitive parameters)
        {
            parameters.Add("RolPorUsuario_Rol", this.Rol.Id);
            parameters.Add("RolPorUsuario_Usuario", this.Usuario.Id);
        }

        void IPersistibleModelo.CargarParametrosNoClave(HashTableNCSensitive parameters)
        {
           
        }

        void IPersistibleModelo.Cargar(HashTableNCSensitive hts)
        {
            this.Usuario = ((IPersistibleModelo)this).Persistible.Transaccion.Factoria<FactoriaUsuario>().SelectXId<Usuario>((hts["RolPorUsuario_Usuario"].ToString()));
            this.Rol = ((IPersistibleModelo)this).Persistible.Transaccion.Factoria<FactoriaRol>().SelectXId<Rol>(hts["RolPorUsuario_Rol"].ToString());
        }

        void IPersistibleModelo.AntesInsert() { }

        void IPersistibleModelo.AntesUpdate() { }

        void IPersistibleModelo.AntesDelete() { }

        void IPersistibleModelo.DespuesInsert() { }

        void IPersistibleModelo.DespuesUpdate() { }

        void IPersistibleModelo.DespuesDelete() { }

        string IPersistibleModelo.HashDatos
        {
            get {return this.Rol.Id+this.Usuario.Username; }
        }

        PersistibleDB IPersistibleModelo.Persistible
        {
            get
            {
                return this.persistible;
            }
            set
            {
                this.persistible = value;
            }
        }

        #endregion

        #region Miembros de IPersistible

        void IPersistible.Insert()
        {
            this.persistible.Insert();
        }

        void IPersistible.Update()
        {
            this.persistible.Update();
        }

        void IPersistible.Delete()
        {
            this.persistible.Delete();
        }

        #endregion
    }
}
